package com.kotlin.demo.类

/**
 * kt 所有的函数默认是 final 修饰的 不能被继承
 * open : 修饰的类可以被继承
 * 带有open的函数 可以被重写
 */
open class Person(private val name: String) {
    private fun showName() = "父类的名称是$name"
    open fun myPrint() = println(showName())  //带有open的函数 可以被重写
}

class Student(private val subName: String) : Person(subName) {
    private fun showName() = "子类的名称是$subName"
    override fun myPrint() {
        println(showName())
    }


}

fun main() {
    Person("zf").myPrint()
    Student("zw").myPrint()

//    val p : Person  = Student("zq")
//    if (p is Student) {
//        println(p)
//    }
//
//    if (p is Person) {
//        println(p)
//    }

    val p1 : Person  = Person("zq")
    if (p1 is Student) {
        println(p1)
    }

    if (p1 is Person) {
        println(p1)
    }
}